In security systems, verifiers are used to authenticate, that is to verify the identity of, a person or other entity such as a computer. Typically an entity requesting authentication asserts their identity to the verifier, for example by entering a user ID. The entity then typically supplies some additional information which should only be knowable to the valid entity. The verifier determines if the information supplied by the entity matches the information that the valid entity would supply. When an entity has been authenticated, meaning that the verifier has confirmed that the identity of the entity is as the entity claims, the entity is allowed access, for example physical access to a physical location, in the case of a physical security system, or electronic access to a resource or information (e.g. financial records, computer data, network access, etc.), in data security systems.
There are many possible configurations for verifiers. Verifiers can receive input from keypads, keyboards, card readers, cameras, microphones, telephone and computer networks, and other such data input devices. As output, verifiers activate physical mechanisms, send electronic data signals, configure software, or take such other action to provide access. Verifiers can be implemented in various ways, for example as special purpose electronic and/or mechanical systems, or as general-purpose computers, possibly, but not necessarily, in electrical communication with special-purpose hardware.
Some verifiers use knowledge or possession of a shared secret to authenticate an entity. The secret is “shared” because it is held by both the verifier and the entity being authenticated. For example, knowledge or possession of a personal identification number, password, or pass phrase can be used to verify an entity. At the time that authentication takes place, the entity either reveals the secret or otherwise proves knowledge or possession of the secret. If the entity shows knowledge or possession of the secret as required by the particular authentication system, the entity is authenticated.
In some systems, an entity uses a physical or digital device, referred to as a token, that incorporates a secret. The secret, stored in some manner in the device, may or may not be known to the entity using the device.
To prove knowledge of a secret contained within the device, some devices provide an authentication code that is based upon, but different from, the secret code contained within the device. The use of such an authentication code allows the device to show knowledge of a secret without revealing it. In some systems, the authentication code is based on time-dependent information. The use of this sort of device has security benefits in that the secret is more difficult to determine by eavesdropping in the communications channel between the entity and the verifier, since the secret itself is not revealed.
One example of this sort of device used by a person to authenticate to a verifier is a token that includes an authentication code display. The person reads an authentication code from the display, and transmits the authentication code to the verifier. In such a system, the user may never know the shared secret. Some such tokens accept user input, such as a PIN, and provide a result in response to the user input as well as other information (such as time-dependent information). One disadvantage with these token devices is that only one user can use the token to authenticate to the verifier. Each user must have his or her own token.
One token of this type stores a secret code, referred to as a seed, and mathematically combines the secret code with a time-varying value and a personal identification code provided by the user to generate an authentication code. The mathematical combination takes place in such a way that the secret code stored in the token cannot be determined from the result—the secret code is combined cryptographically with the current time and other information. In another system that is a challenge-response system, meaning that the verifier transmits a challenge for the user to respond to, the secret code is cryptographically combined with the challenge to produce an output that is sent to the verifier as a response to the challenge.
To verify an entity using a shared secret, the verifier needs to have knowledge of the shared secret. In a security system that verifies a large number of entities, there is a tradeoff between security and verifier availability. If there are a large number of verifiers, there is more likely to be a verifier available when a particular entity requires authentication. However, as the number of verifiers that have knowledge of a secret increases, it becomes increasingly more difficult to maintain the security of the system.
The utility of a security system is limited by the number and variety of verifiers to which an entity can conveniently authenticate. If the entity interacts with a number of verifiers that share different secrets with that entity, the entity will have to manage a number of secrets (or devices containing secrets), where each secret is used to authenticate to one or small number of verifiers. Managing a large number of secrets adds complexity to a computer-based entity, and is inconvenient for a human entity. Even the process of securely sharing a different secret between an entity and each of a large number of verifiers can be inconvenient and cumbersome.
Public key cryptography can be used to avoid the need to securely share a secret between each two parties that wish to communicate or authenticate. However, public-key cryptography is impractical in many user and device authentication settings, at least partly because of the large computation power required to accomplish the calculations, and the complexity of managing certificates and revocation lists.